// 引入cookies 存 取 删除token
import { getToken, setToken, removeToken } from '@/utils/auth'
// 引入登录 注册接口 保存token
import { userLogin } from '@/api/login'
import { getUserInfo, getMypermissions } from '@/api/user'

const state = {
  token: getToken(), // 声明变量存储token
  userInfo: {}
}

const mutations = {
  // 存token
  getToken(state, token) {
    state.token = token
    // 保存到本地
    setToken(token)
  },

  // 清空token
  delToken(state) {
    state.token = ''
    removeToken()
  },

  // 存用户信息
  getUserInfo(state, userInfo) {
    state.userInfo = userInfo
  },

  // 清空用户信息
  delUserInfo(state) {
    state.userInfo = {}
  }
}

const actions = {
  // 登录请求封装在getToken函数中
  async getToken(store, data) {
    const res = await userLogin(data)

    // 调用setToken 存token
    await store.commit('getToken', res.data.jwt)
  },

  // 获取用户信息
  async getuserInfo(store) {
    // 获取用户资料
    const res = await getUserInfo()
    // 获取用户权限
    const res2 = await getMypermissions()
    // 把返回结果展开合并后存到vuex
    await store.commit('getUserInfo', { ...res.data, ...res2.data })
  },

  // 退出登录的方法
  logout(store) {
    store.commit('delToken')
    store.commit('delUserInfo')
  }

}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}
